public class Test {
    // 接收 int 类型的参数
    public static void func(int val) {
        System.out.println(val);
    }

    // 接收 String 类型的参数
    public static void func(String val) {
        System.out.println(val);
    }

    // 接收 double 类型的参数
    public static void func(double val) {
        System.out.println(val);
    }

    public static void main1(String[] args) {
        // 传递 int 类型的值
        func(1);

        // 传递 String 类型的值
        func("Alex");

        // 传递 double 类型的值
        func(1.2);
    }

//    static class MyArray {
//        Object[] arr = new Object[100];
//
//        public void setVal(int pos, Object val) {
//            arr[pos] = val;
//        }
//
//        public Object getVal(int pos) {
//            return arr[pos];
//        }
//    }
//

    public static void main2(String[] args) {
        // Object[] arr = {1, "Alex", 1.2};

        MyArray array = new MyArray();

        array.setVal(0, 1);
        array.setVal(1, "Alex");
        array.setVal(2, 1.2);

        int val1 = (int) array.getVal(1);
        String val2 = (String) array.getVal(2);
        double val3 = (double) array.getVal(3);
    }

    public static void main(String[] args) {
        MyArray<Integer> myArray1 = new MyArray<>();

        myArray1.setVal(0, 0);
        myArray1.setVal(1, 1);
        myArray1.setVal(2, 2);
        int val1 = myArray1.getVal(0);

        MyArray<String> myArray2 = new MyArray<>();

        myArray2.setVal(0, "Alex");
        myArray2.setVal(1, "Alice");
        myArray2.setVal(2, "Mana");
        String val2 = myArray2.getVal(0);
    }

}

class MyArray<T> {
    T[] arr = (T[]) new Object[100];

    public void setVal(int pos, T val) {
        arr[pos] = val;
    }

    public T getVal(int pos) {
        return arr[pos];
    }
}
